Network servers and other host computers may use different types of peripheral storage devices having different capacities, access times, and other operating characteristics suitable for various applications. Enterprise and data center solutions may employ multiple complementary data storage devices to achieve desired data availability, reliability, security, long-term accessibility, and cost effectiveness, among other considerations. Many networks use an automated schedule to archive data for long-term storage. Long-term storage devices may be implemented using a wide variety of storage technologies including magnetic and optical disk drives, solid-state drives, tape drives, or other types of storage devices. However, compromises among performance, capacity, and cost are often required. Tape drives continue to provide cost-effective, reliable, and energy efficient long-term data storage, particularly for high-volume backups, long-life archives, disaster recovery/business continuity, compliance, and various other applications that include inactive data.
Locating and retrieving data from peripheral storage devices often requires transferring large amounts of data from various storage media to the host computer for processing, which utilizes significant host resources and data channel and/or network bandwidth. This may adversely impact performance of any applications or processes waiting for the data, as well as reducing host resources available for servicing other unrelated processes or applications.
One known strategy provides rudimentary search functions for a single data string using local peripheral device resources. Another strategy has utilized an intermediate peripheral device controller in communication with the host computer and multiple peripheral devices. The intermediate controller implements shared control such that only one of the multiple peripheral devices can be searched by the controller at any particular time, with data transferred from the peripheral device to the controller for searching and matching data blocks transferred from the controller to the host computer.